AWS Elemental LinkをAWS CLIから操作してみた
はじめに
清水です。AWS Elemental MediaLive用のセットアップ済みライブエンコーダデバイスとして動作するAWS Elemental Linkですが、AWS CLIも準備されており、AWSマネジメントコンソールから確認、設定できる項目のほとんどはAWS CLIからも操作することができます。具体的にはAWS Elemental MediaLiveのコマンド(aws medialive
で始まる)の一部となっており、deviceに関連する以下3つが対象となります。
- list-input-devices
- describe-input-device
- update-input-device
本エントリではこれらAWS Elemental Linkの情報を確認、設定できるコマンドを実際に試してみました。なおAWS CLIの環境はv2を使用していて、具体的には以下となります。
% aws --version aws-cli/2.0.26 Python/3.7.4 Darwin/19.5.0 botocore/2.0.0dev30
list-input-devices
デバイス一覧表示のコマンドになります。出力数が多くなる場合などは引数で調整ができるようです。
% aws medialive list-input-devices
出力は以下のようになりました。AWSマネジメントコンソールのMediaLive画面、Devicesで確認できる項目と同等ですね。デバイスのうち一つはオフライン状態、もう一つはAWSと疎通が取れており映像信号も入力されている、しかしMediaLiveのChannelには映像を打ち上げていない(MediaLiveのChannelがStartされていない)状態となります。
% aws medialive list-input-devices --region us-west-2 { "InputDevices": [ { "Arn": "arn:aws:medialive:us-west-2:123456789012:inputDevice:hd-XXXXXXXXXXXXXXXXXXXXulzh", "ConnectionState": "DISCONNECTED", "DeviceSettingsSyncState": "SYNCED", "HdDeviceSettings": { "ConfiguredInput": "AUTO", "MaxBitrate": 9000000 }, "Id": "hd-XXXXXXXXXXXXXXXXXXXXulzh", "MacAddress": "XX:XX:XX:XX:XX:XX", "Name": "", "NetworkSettings": {}, "SerialNumber": "XXXXXXXXXXXX", "Type": "HD" }, { "Arn": "arn:aws:medialive:us-west-2:123456789012:inputDevice:hd-XXXXXXXXXXXXXXXXXXXXc0z8", "ConnectionState": "CONNECTED", "DeviceSettingsSyncState": "SYNCED", "HdDeviceSettings": { "ActiveInput": "HDMI", "ConfiguredInput": "AUTO", "DeviceState": "IDLE", "Framerate": "60.0", "Height": 1080, "MaxBitrate": 900000, "ScanType": "PROGRESSIVE", "Width": 1920 }, "Id": "hd-XXXXXXXXXXXXXXXXXXXXc0z8", "MacAddress": "XX:XX:XX:XX:XX:XX", "Name": "", "NetworkSettings": { "DnsAddresses": [ "0.0.0.0" ], "Gateway": "192.168.113.1", "IpAddress": "192.168.113.7", "IpScheme": "STATIC", "SubnetMask": "255.255.255.0" }, "SerialNumber": "XXXXXXXXXXXX", "Type": "HD" } ] }
describe-input-device
続いてliset-inputsで得られてたInputのうちの1つについて、describe-inputコマンドで詳細情報を取得してみます。デバイスのID(hd-
で始まるもの)が引数として必要な点に注意します。
% aws medialive describe-input-device --input-device-id <value>
結果は以下となりました。list-input-devices
で一覧表示される情報のうち1つのデバイスについて表示される、という具合なようですね。なお先ほどのlist-input-devices
時から、Linkデバイスhd-XXXXXXXXXXXXXXXXXXXXc0z8
については実際にInputとしてMediaLiveのChannelにアタッチし、そのChannelをRunnnig状態に変更してみました。"DeviceState": "STREAMING
となっているのがわかりますね。
% aws medialive describe-input-device --input-device-id hd-XXXXXXXXXXXXXXXXXXXXc0z8 --region us-west-2 { "Arn": "arn:aws:medialive:us-west-2:123456789012:inputDevice:hd-XXXXXXXXXXXXXXXXXXXXc0z8", "ConnectionState": "CONNECTED", "DeviceSettingsSyncState": "SYNCED", "HdDeviceSettings": { "ActiveInput": "HDMI", "ConfiguredInput": "AUTO", "DeviceState": "STREAMING", "Framerate": "60.0", "Height": 1080, "MaxBitrate": 900000, "ScanType": "PROGRESSIVE", "Width": 1920 }, "Id": "hd-XXXXXXXXXXXXXXXXXXXXc0z8", "MacAddress": "XX:XX:XX:XX:XX:XX", "Name": "", "NetworkSettings": { "DnsAddresses": [ "0.0.0.0" ], "Gateway": "192.168.113.1", "IpAddress": "192.168.113.7", "IpScheme": "STATIC", "SubnetMask": "255.255.255.0" }, "SerialNumber": "XXXXXXXXXXXX", "Type": "HD" }
update-input-device
デバイスについて設定変更を行うコマンドになります。マネジメントコンソールから設定変更できる項目は以下エントリでも確認したとおり、Input sourceとMaximum bitrateのみです。
今回はMaximum bitrateを変更してみます。 (上記エントリで9000000
つまり9Mbpsだったものを900000
つまり900kbpsに変更していますが、今回は逆に9000000
、9Mbpsに変更してます。)
引数としてデバイスのID(hd-
で始まるもの)の他、設定内容を渡します。
% aws medialive update-input-device --input-device-id <value> --hd-device-settings <value>
まず変更前の状態をdescribe-input-device
で確認します。
% aws medialive describe-input-device --input-device-id hd-XXXXXXXXXXXXXXXXXXXXc0z8 --region us-west-2 { "Arn": "arn:aws:medialive:us-west-2:123456789012:inputDevice:hd-XXXXXXXXXXXXXXXXXXXXc0z8", "ConnectionState": "CONNECTED", "DeviceSettingsSyncState": "SYNCED", "HdDeviceSettings": { "ActiveInput": "HDMI", "ConfiguredInput": "AUTO", "DeviceState": "IDLE", "Framerate": "60.0", "Height": 1080, "MaxBitrate": 900000, "ScanType": "PROGRESSIVE", "Width": 1920 }, "Id": "hd-XXXXXXXXXXXXXXXXXXXXc0z8", "MacAddress": "XX:XX:XX:XX:XX:XX", "Name": "", "NetworkSettings": { "DnsAddresses": [ "0.0.0.0" ], "Gateway": "192.168.113.1", "IpAddress": "192.168.113.7", "IpScheme": "STATIC", "SubnetMask": "255.255.255.0" }, "SerialNumber": "XXXXXXXXXXXX", "Type": "HD" }
続いて、update-input-deviceコマンドを実行して実際に設定変更します。レスポンスとして返る情報で、変更された"MaxBitrate": 9000000,
が確認できますね。
% aws medialive update-input-device --input-device-id hd-XXXXXXXXXXXXXXXXXXXXc0z8 --hd-device-settings MaxBitrate=9000000 --region us-west-2 { "Arn": "arn:aws:medialive:us-west-2:123456789012:inputDevice:hd-XXXXXXXXXXXXXXXXXXXXc0z8", "ConnectionState": "CONNECTED", "DeviceSettingsSyncState": "SYNCING", "HdDeviceSettings": { "ActiveInput": "HDMI", "ConfiguredInput": "AUTO", "DeviceState": "IDLE", "Framerate": "60.0", "Height": 1080, "MaxBitrate": 9000000, "ScanType": "PROGRESSIVE", "Width": 1920 }, "Id": "hd-XXXXXXXXXXXXXXXXXXXXc0z8", "MacAddress": "XX:XX:XX:XX:XX:XX", "Name": "", "NetworkSettings": { "DnsAddresses": [ "0.0.0.0" ], "Gateway": "192.168.113.1", "IpAddress": "192.168.113.7", "IpScheme": "STATIC", "SubnetMask": "255.255.255.0" }, "SerialNumber": "XXXXXXXXXXXX", "Type": "HD" }
念のため、もういちどdescribe-input-device
コマンドを実行しておきます。
% aws medialive describe-input-device --input-device-id hd-XXXXXXXXXXXXXXXXXXXXc0z8 --region us-west-2 { "Arn": "arn:aws:medialive:us-west-2:123456789012:inputDevice:hd-XXXXXXXXXXXXXXXXXXXXc0z8", "ConnectionState": "CONNECTED", "DeviceSettingsSyncState": "SYNCED", "HdDeviceSettings": { "ActiveInput": "HDMI", "ConfiguredInput": "AUTO", "DeviceState": "IDLE", "Framerate": "60.0", "Height": 1080, "MaxBitrate": 9000000, "ScanType": "PROGRESSIVE", "Width": 1920 }, "Id": "hd-XXXXXXXXXXXXXXXXXXXXc0z8", "MacAddress": "XX:XX:XX:XX:XX:XX", "Name": "", "NetworkSettings": { "DnsAddresses": [ "0.0.0.0" ], "Gateway": "192.168.113.1", "IpAddress": "192.168.113.7", "IpScheme": "STATIC", "SubnetMask": "255.255.255.0" }, "SerialNumber": "XXXXXXXXXXXX", "Type": "HD" }
まとめ
AWS CLIを使ってAWS Elemental Linkの情報を参照、また実際に設定項目を変更してみました。AWSマネジメントコンソールのMediaLiveのページ、Devicesの項目についてはほとんどがAWS CLIでも確認できますね。例えばLinkデバイスがAWS環境と接続され、映像信号も入力されている状況になったら、MediaLiveのChannelをStartさせる、なんてこともできそうです。個人的にちょっと期待したのがサムネイル表示部分だったのですが、こちらは現段階ではAWS CLIでは取得不可能のようでした。APIを直接実行すれば取得できるのかも確認したいところです。